package net.happy2v.louis.re;

import java.io.InputStream;

import net.happy2v.louis.re.databases.DatabaseHelper;
import net.happy2v.louis.re.databases.DatabaseHelper.Tables;
import net.happy2v.louis.re.tabmenu.TabMenuActivity;

import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserFactory;

import android.app.Activity;
import android.content.ContentResolver;
import android.content.ContentValues;
import android.content.Intent;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.GridView;

/**
 * JC School RevivalEnglish 수업을 듣는 학생들을 위한 소책자 어플리케이션이다.
 * - 소책자의 내용을 안드로이드 폰에서 확인할 수 있다.
 * - mp3 파일을 다운로드 및 청취 할 수 있다.
 * - 간단한 대화를 나눌 수 있다.
 * 
 * @author happy2v
 *
 */
public class RevivalEnglishActivity extends Activity implements OnItemClickListener {
	
	/* 문맥을 저장할 변수*/
	private Activity mActivity;
	
	/* 메인 아이템 어댑터 */
	private RevivalEnglishAdapter mAdapter;
	/* 아이템을 나타낼 그리드 뷰 */
	private GridView mGridView;
	
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.mActivity = this;
        setDB();
        /* 화면의 뷰를 설정해 준다. */
        setContentView(R.layout.main);
        
        /* mActivity 에 현재 문맥을 저장한다. */
        this.mAdapter = new RevivalEnglishAdapter(mActivity);
        /* 레이아웃에서 아이디로 그리드 뷰를 객체 변수화 시킨다. */
        this.mGridView = (GridView)findViewById(R.id.gView_items);
        this.mGridView.setAdapter(mAdapter);
        this.mGridView.setOnItemClickListener(this);
    }

	public void onItemClick(AdapterView<?> adapter, View view, int position, long id) {
		startActivity(new Intent(mActivity, TabMenuActivity.class));
	}
	
	private void setDB(){
		SQLiteDatabase db = null;
		DatabaseHelper dbhelper = new DatabaseHelper(mActivity);
		db = openOrCreateDatabase(DatabaseHelper.DATABASE_NAME, SQLiteDatabase.CREATE_IF_NECESSARY, null);
//		db.execSQL(Tables.TABLE_NAME_RE_DATA);
//		dbhelper.onOpen(db);
		 
		ContentValues cv = new ContentValues();
		try{
			XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
			factory.setValidating(false);
			XmlPullParser xmlData = factory.newPullParser();
			
			InputStream raw = mActivity.getAssets().open("revivalenglish.xml");
			xmlData.setInput(raw, null);
			
			int eventType = xmlData.getEventType();
			String tag = null;
			while(eventType != XmlPullParser.END_DOCUMENT){
				if(eventType == XmlPullParser.START_TAG){
					tag = xmlData.getName();
					while(tag != xmlData.getName()){
						
					}
				}
				if(eventType == XmlPullParser.START_DOCUMENT){
					Log.i("ATOM", "start docu"); 
				}else if(eventType == XmlPullParser.START_TAG){
					Log.i("ATOM", "start tag xmlData.getName() = " + xmlData.getName());
					Log.i("ATOM", "start tag xmlData.getAttributeCount() = " + xmlData.getAttributeCount());
					Log.i("ATOM", "start tag xmlData.getColumnNumber() = " + xmlData.getColumnNumber());
					Log.i("ATOM", "start tag xmlData.getDepth() = " + xmlData.getDepth());
					Log.i("ATOM", "start tag xmlData.getEventType() = " + xmlData.getEventType());
					Log.i("ATOM", "start tag xmlData.getInputEncoding() = " + xmlData.getInputEncoding());
					Log.i("ATOM", "start tag xmlData.getLineNumber() = " + xmlData.getLineNumber());
					Log.i("ATOM", "start tag xmlData.getNamespace() = " + xmlData.getNamespace());
					Log.i("ATOM", "start tag xmlData.getPositionDescription() = " + xmlData.getPositionDescription());
					Log.i("ATOM", "start tag xmlData.getPrefix() = " + xmlData.getPrefix());
					Log.i("ATOM", "start tag xmlData.getText() = " + xmlData.getText());
					Log.i("ATOM", "start tag xmlData.getProperty(\"num\") = " + xmlData.getProperty("num"));
					Log.i("ATOM", "start tag xmlData.getNamespace(\"num\") = " + xmlData.getNamespace("num"));
					Log.i("ATOM", "start tag xmlData.getFeature(\"num\") = " + xmlData.getFeature("num"));
					Log.i("ATOM", "start tag xmlData.getNamespace(\"num\") = " + xmlData.getNamespace("num"));
					for(int i = 0; i < xmlData.getAttributeCount(); i++ ){
						Log.i("ATOM", "start tag xmlData.getAttributeName(i) = " + xmlData.getAttributeName(i));
						Log.i("ATOM", "start tag xmlData.getAttributeNamespace(i) = " + xmlData.getAttributeNamespace(i));
						Log.i("ATOM", "start tag xmlData.getAttributePrefix(i) = " + xmlData.getAttributePrefix(i));
						Log.i("ATOM", "start tag xmlData.getAttributeType(i) = " + xmlData.getAttributeType(i));
						Log.i("ATOM", "start tag xmlData.getAttributeValue(i) = " + xmlData.getAttributeValue(i));
						Log.i("ATOM", "start tag xmlData.getNamespacePrefix(i) = " + xmlData.getNamespacePrefix(i));
						Log.i("ATOM", "start tag xmlData.getNamespaceUri(i) = " + xmlData.getNamespaceUri(i));
					}
				}else if(eventType == XmlPullParser.END_TAG){
					Log.i("ATOM", "end tag = " + xmlData.getName());
				}else if(eventType == XmlPullParser.TEXT){
					Log.i("ATOM", "text = " + xmlData.getText());
				}else if(eventType == XmlPullParser.CDSECT){
					Log.i("ATOM", "CDSECT");
				}else if(eventType == XmlPullParser.COMMENT){
					Log.i("ATOM", "COMMENT");
				}else if(eventType == XmlPullParser.DOCDECL){
					Log.i("ATOM", "DOCDECL");
				}else if(eventType == XmlPullParser.ENTITY_REF){
					Log.i("ATOM", "ENTITY_REF");
				}else if(eventType == XmlPullParser.IGNORABLE_WHITESPACE){
					Log.i("ATOM", "IGNORABLE_WHITESPACE");
				}else if(eventType == XmlPullParser.PROCESSING_INSTRUCTION){
					Log.i("ATOM", "PROCESSING_INSTRUCTION");
				}
				eventType = xmlData.next();
			}
		}catch (Exception e) {
			Log.e("ATOM", e.toString());
		}
//		dbHelper.getWritableDatabase().insertOrThrow(Tables.TABLE_NAME_CONTENTS, null, cv);
	}
}